package com.caogen.lombokcase;

import lombok.*;

import java.util.List;

/**
 *  lombok 通过IDE插件来扩充功能,注解不需要单独解读即刻生效
 *
 *  单独的getter和setter注释到对应的field上,还可以进行访问权限的控制
 */
public class LombokIntroduction {


    @Setter @Getter String message;

    @Setter(AccessLevel.PRIVATE) private String name;

    public static void main(String[] args) {
//        Family family = new Family();
//        System.out.println(family);
    }
}

/**
 * data 注解到类上,重写了hashcode 和equals方法,并且有无参构造函数
 * 对于boolean类型的属性值,get默认是isOld 或者isNew,不是get
 */
@Data
class SingleData{

    String data;

    boolean old;

    boolean isNew;
}

/**
 * 如果有为nonnull的注解,则会作为有参构造函数,不能为null
 */
@Data
class Family{
    @NonNull
    List<String> members;

    String address;
}